﻿/*
 * Created by SharpDevelop.
 * User: t_furu
 * Date: 2007/11/07
 * Time: 10:07
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */

using System;

namespace nicosb
{
	/// <summary>
	/// Description of Config.
	/// </summary>
	public class Config
	{
		private ConfigParameter confparam;
		
		public Config()
		{
			confparam = new ConfigParameter();
		}
		
		public Config(ConfigParameter parameter){
			setParameter(parameter);
		}

		//cron.phpのパスを取得
		public String getCronPhpPath(){
			return confparam.cron_php_path;
		}
		
		//cron.phpのパスを設定
		public void setCronPhpPath(String path){
			confparam.cron_php_path = path;
		}
		
		//実行間隔を取得
		public String getTaskMinutes(){
			return confparam.task_minutes;
		}
		
		//実行間隔を設定
		public void setTaskMinutes(String minutes){
			confparam.task_minutes = minutes;
		}

		//Apache 受信ポートを取得
		public String getApachePort(){
			return confparam.apache_port;
		}
		
		//Apache 受信ポートを設定
		public void setApachePort(String port){
			confparam.apache_port = port;
		}
		
		//Apache ドキュメントルートを取得
		public String getApacheDocumentRoot(){
			return confparam.apache_documentroot;
		}
		
		//Apache ドキュメントルートを設定
		public void setApacheDocumentRoot(String documentroot){
			confparam.apache_documentroot = documentroot;
		}
		
		//起動通知送信先を取得
		public String getRegisterUrls(){
			return confparam.register_urls;
		}
		
		//起動通知送信先を設定
		public void setRegisterUrls(String urls){
			confparam.register_urls = urls;
		}
		
		//パスを最適化
		private string optPath(string path){
			if(path==null) path = "";
			string ret = path;
			if(!path.Equals("")){
				int len = path.Length;
				char chr = path[len-1];
				if(chr!='\\') ret += @"\";
			}
			return ret;
		}
			
		//ConfigParameter を設定する
		public void setParameter(ConfigParameter parameter){
			this.confparam = parameter;
		}
		
		//ConfigParameter取得
		public ConfigParameter getParameter(){
			return confparam;
		}
		
		//設定をXMLファイルとして出力
		public static void save(Config config,String filename){
			System.Xml.Serialization.XmlSerializer serializer =
				new System.Xml.Serialization.XmlSerializer(typeof(ConfigParameter));
			System.IO.FileStream fs = new System.IO.FileStream(filename, System.IO.FileMode.Create);
			serializer.Serialize(fs, config.getParameter());
			fs.Close();
		}
		
		//設定ファイルXMLを読み込み
		public static Config load(String filename){
			System.Xml.Serialization.XmlSerializer serializer =
				new System.Xml.Serialization.XmlSerializer(typeof(ConfigParameter));
			System.IO.FileStream fs = new System.IO.FileStream(filename,System.IO.FileMode.Open);
			ConfigParameter parameter =(ConfigParameter) serializer.Deserialize(fs);
			fs.Close();
			return new Config(parameter);
		}
	}
}
